package br.com.rafa3d.controle;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;

import br.com.rafa3d.modelo.Cliente;
import br.com.rafa3d.modelo.Produto;
import br.com.rafa3d.negocio.CadastradorProduto;

@ManagedBean(name = "produtoBean")
@RequestScoped
public class ProdutoController implements Serializable {

	private static final long serialVersionUID = 1L;
	
	private Produto produto;
	private CadastradorProduto prodDao;
	private List<Produto> listProd;
	
	public ProdutoController(){
		setProduto(new Produto());
		prodDao = new CadastradorProduto();
	}
	
	public void salvarProduto(){
		System.out.println(produto.getCod());
		prodDao.gravar(produto);
		produto = new Produto();
	}
	
	public void deletaProduto(ActionEvent event){
		FacesContext context = FacesContext.getCurrentInstance();
		Produto prod = (Produto) prodDao.buscarCod(produto.getCod());
		System.out.println(prod.getCod());
		
		if(prod.getCod() != 0){
			prodDao.deletar(prod.getCod());
			context.addMessage(null, new FacesMessage("Produto deletado", "produto Deletado com sucesso"));
		}else{
			context.addMessage(null, new FacesMessage("Codigo Invalido", "Produto nao existe"));
		}
		
	}
	
	public void consultarProduto(){
		listProd = new ArrayList<Produto>();
		Produto prod;
		if (produto.getCod() > 0 && listProd.isEmpty()) {
			prod = (Produto) prodDao.buscarCod(produto.getCod());
			listProd.add(prod);
		}else if(!produto.getNome().isEmpty() && listProd.isEmpty()){
			listProd = (List<Produto>) prodDao.buscarNome(produto.getNome());
		}else if (listProd.isEmpty() && produto.getNome().isEmpty() && produto.getCod() == 0) {
			listProd = (List<Produto>) prodDao.listarTodos();
		}
		produto = new Produto();
	}

	public Produto getProduto() {
		return produto;
	}

	public void setProduto(Produto produto) {
		this.produto = produto;
	}

	public CadastradorProduto getProdDao() {
		return prodDao;
	}

	public void setProdDao(CadastradorProduto prodDao) {
		this.prodDao = prodDao;
	}

	public List<Produto> getListProd() {
		return listProd;
	}

	public void setListProd(List<Produto> listProd) {
		this.listProd = listProd;
	}

}
